Timer1 

image65.gif

As is the case with the other timer Helpers, the Timer1 Helper is used to take existing animation and control it's playback timing in a Non Linear fashion. Please read through the following example to get a better understanding of how this helper does that.

Imagine that you have an animated door that needs 31 frames to open (0-30). The animation has two keyframes, one at frame 0 (door closed) and one at frame 30 (door open). Standard animation packages like 3ds Max understand this linear animation and so when the Play button is pushed, the door will open over the course of frames 0 to 30 and that will be it. The Timer1 Helper, however, lets you extract that 31-frame block of animation, and control it "outside of normal time". You will be able to trigger it's start and stop times, loop it, and cause it to pause anywhere you'd like repeatedly and reliably.

To use the Timer1 Helper you must think about the constants in your block of animation. What are the key points or keyframes that must be used? The only constants in this example are the two key frames you have set to open the door (frame 0 and frame 30). Knowing this, you can now set your Timer1 Helper to trigger your animation as you want.

The Start parameter reflects the first absolute keyframe you want to use from your block of animation. In this example, that would be frame 0, which represents the closed door. Frames1 is used to define the time (in frames) it takes to play back the block of animation (frame 0-30) or a fraction of the “full” animation. Hold1 represents the last keyframe you want to use from your block of animation that is played back at the speed set by Frames1. In this example, that would be frame 30, which represents the opened door.

Ok, now let’s review what we know so far - for this door animation, let’s say that Start is set to 0, Frames1 is set to 15 and Hold1 is set to 30. With these settings, the entire block of animation (frames 0 to 30 - as defined in the Start and Hold1 parameters) will be played back in 15 frames (as defined by the Time1 parameter).

The Time2 sequence is just added after Time1 has finished. It controls how long the added part of the animation should last. The concepts and functions are the same as for Time1. Time3 defines the amount of time it takes to reach the “End“ position of the “full” animation. Note, this is not the “end” of the animation created by Timer1, it’s the last frame of the “full” animation. In the case of the door an End value of 0 would mean that the door swings back to its closed state (frame 0). To keep the door a little bit open at the end of the animation one would use frame 5 or 10 as this would reflect a door open status from the “full” animation (Frame 0-30).

We know that the above sounds like we had a few too many beers, but don’t panic if you did not totally grasp this “time thing” in the first run. Try to read it through again at a later stage and you might get into NLA more deeply. Please also check out the door sample file that was installed with the thinkingParticles software package.

Operator Inputs 

ON - (Bool) This input data stream determines whether the operator is considered 'on' or 'off.' You can connect other operators to this input channel such as a Bool Helper to activate/deactivate the whole operator.

Time
- (Time) This input data stream is used to define the local time for the operator when the user wants to override the default system time.

Start
- (Bool) This input data stream is used to trigger the animation playback.

Particle
- (Particle) This input data stream reads in the currently selected particle group that is to be used for the animation block.

Start
- (Frame) This input data stream is used to override the Start spinner in the Timer1 rollout.

Frames1
- (Frame) This input data stream is used to override the Frames1 spinner in the Timer1 rollout.

Hold1
- (Frame) This input data stream is used to override the Hold1 spinner in the Timer1 rollout.

Frames2
- (Frame) This input data stream is used to override the Frames2 spinner in the Timer1 rollout.

Hold2
- (Frame) This input data stream is used to override the Hold2 spinner in the Timer1 rollout.

Frames3
- (Frame) This input data stream is used to override the Frames3 spinner in the Timer1 rollout.

End
- (Frame) This input data stream is used to override the End spinner in the Timer1 rollout.

Extend
- (Bool) This input data stream is used to override the Extend checkbox state in the Timer1 rollout.

Single
- (Bool) This input data stream is used to override the Single checkbox state in the Timer1 rollout.

Operator Outputs 

Out - (Bool) This output data stream sends the true or false state to other node input data streams regarding the Timer state.

Time
- (Time) This output data stream send out the local Timer1 value. So if the Timer1's Value is set to 10, and it's at frame 6 of it's animation block timing - this output data stream outputs a time of 6.

Particle
- (Particle) This output data stream sends the particles that are "tagged" by the Timer1 when it's active.

Rollout Menu 

image100.gif

Start
- This parameter sets the start frame within the block of animation that is to be used by Frames1 to play back.

Frames1
- Usually an animation is keyframe dependent which means that the animation lasts only as long as there are keyframes and animation data placed at specific points in time. The Frames1 spinner tells the Timer1 Helper to play back the defined block of animation in this many frames, regardless of how many frames it would have taken originally. So, an object that originally took 30 frames to complete its animation would play back those 30 frames in 15 frames by setting the Frames1 value to 15.

Hold1
- This spinner sets the last frame of the animation block that should be used as the end point within the animation controlled by Frames1. As an example, let’s say that you have Start set to 0, Frames1 set to 30 and Hold1 to 5. This will make the Timer1 Helper only play back frames 0 (Start value) through 5 (Hold1 value) of the animation block in 30 frames (as set in Frames1). This results in a slow motion effect as an original 5 frame animation now takes 30 frames.

Frames2
- The Frames2 parameter tells the Timer1 Helper to play back the animation block (defined as Start to Hold2) in this many frames, regardless of how many frames it would have taken originally. Frames2 is an animation sequence added to Frames1. It is played back after the animation of Frames1 has finished.

Hold2
- This spinner sets the last frame of the animation block that should be used as the end point within the animation controlled by Frames2. As an example, let’s say that you have Start set to 0, Frames2 set to 30 and Hold2 to 5. This will make the Timer1 Helper only play back frames 0 (Start value) through 5 (Hold2 value) of the animation block in 30 frames (as set in Frames2). This results in a slow motion effect as an original 5 frame animation now takes 30 frames.

Frames3
- The Frames3 spinner sets the time the Timer1 Helper needs to play back the animation block until the frame set in the End spinner is reached.

End
- This sets the frame that should be used from the animation block to play back the animation controlled by Frames3. When set to 0, it returns the animation to its original starting point. In the case of the door example, since the animation started with the door closed at frame 0, if this value is used in the End parameter, it will cause the door to close when the animation ends.

Extend
- Activate this checkbox to freeze the status of the animation played until Frames2 as long as the ON input data stream of the Timer1 Helper receives a True condition. The animation sequence controlled by Frames3 is played back as soon as this ON input data stream returns a False condition. By turning on this checkbox, you can effectively cause the Timer1 Helper to play the animation repeatedly as conditions or rules are met.

Single
- Activate this checkbox to play back a complete animation cycle (Time1-Time3), as soon as the ON input data stream receives a True Condition. This event happens one time only, regardless of how many times the True condition is received after that.